package com.bbva.kyfb.kyfbdaohostimpl.servicios.host.inmft010_1_1_4;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bbva.jee.arq.spring.core.auditoria.Auditable;
import com.bbva.jee.arq.spring.core.auditoria.InformacionAuditable;
import com.bbva.jee.arq.spring.core.host.ExcepcionTransaccion;
import com.bbva.jee.arq.spring.core.host.ServicioTransacciones;
import com.googlecode.ehcache.annotations.Cacheable;
import com.googlecode.ehcache.annotations.TriggersRemove;

/**
 * Transacci&oacute;n <code>INMFT010</code>
 * 
 * @see PeticionTransaccionInmft010_1_1_4
 * @see RespuestaTransaccionInmft010_1_1_4
 */
@Component
public class TransaccionInmft010_1_1_4 {
	
	@Autowired
	private ServicioTransacciones servicioTransacciones;
	
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	public RespuestaTransaccionInmft010_1_1_4 invocar(PeticionTransaccionInmft010_1_1_4 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionInmft010_1_1_4.class, RespuestaTransaccionInmft010_1_1_4.class, transaccion);
	}
	
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	@Cacheable(cacheName = "cacheTransaccionInmft010_1_1_4")
	public RespuestaTransaccionInmft010_1_1_4 invocarCache(PeticionTransaccionInmft010_1_1_4 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionInmft010_1_1_4.class, RespuestaTransaccionInmft010_1_1_4.class, transaccion);
	}
	
	@Auditable(InformacionAuditable.DURACION)
	@TriggersRemove(cacheName = "cacheTransaccionInmft010_1_1_4", removeAll = true)
	public void vaciarCache() {}
		
}